Technologies for protocol execution with aggregation and caching

ABSTRACT

Technologies for protocol execution include a command device to broadcast a protocol message to a plurality of computing devices and receive an aggregated status message from an aggregation system. The aggregated status message identifies a success or failure of execution of instructions corresponding with the protocol message by the plurality of computing devices such that each computing device of the plurality of computing devices that failed is uniquely identified and the success of remaining computing devices is aggregated into a single success identifier.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/580,758, entitled “TECHNOLOGIES FOR PROTOCOL EXECUTION WITHAGGREGATION AND CACHING,” which was filed on Dec. 23, 2014.

BACKGROUND

Central command and control devices (e.g., cloud computing devices) areoften used to perform large-scale device management functions. Forexample, a central command device may handle the secure distribution ofupdates, secure key agreement management, and/or secure life-cyclemanagement for a large number (e.g., billions) of computing devices.Currently, management protocols between a central command device and alarge number of computing devices (e.g., endpoints) may be executedprimarily based on a couple different approaches. One common approach toexecuting management protocols is to execute the management protocolwith each computing device separately, which requires a large amount ofresources and significant expense. Another common approach is to use atree-based solution in which a hierarchy of management agents proxy theprotocol; however, such solutions require the intermediary nodes to betrusted.

BRIEF DESCRIPTION OF THE DRAWINGS

The concepts described herein are illustrated by way of example and notby way of limitation in the accompanying figures. For simplicity andclarity of illustration, elements illustrated in the figures are notnecessarily drawn to scale. Where considered appropriate, referencelabels have been repeated among the figures to indicate corresponding oranalogous elements.

FIG. 1 is a simplified block diagram of at least one embodiment of asystem for protocol execution with aggregation and caching;

FIG. 2 is a simplified block diagram of at least one embodiment of acommand device of the system of FIG. 1;

FIG. 3 is a simplified block diagram of at least one embodiment of anenvironment of the command device of the system of FIG. 1;

FIG. 4 is a simplified block diagram of at least one embodiment of anenvironment of an aggregation device of the system of FIG. 1;

FIG. 5 is a simplified block diagram of at least one embodiment of anenvironment of a computing device of the system of FIG. 1;

FIG. 6 is a simplified flow diagram of at least one embodiment of amethod for protocol execution that may be executed by the command deviceof the system of FIG. 1;

FIG. 7 is a simplified data flow diagram of at least one embodiment of amethod for protocol execution that may be executed by an aggregationsystem of the system of FIG. 1;

FIG. 8 is a simplified flow diagram of at least one embodiment of amethod for protocol execution that may be executed by a computing deviceof the system of FIG. 1; and

FIG. 9 is a simplified data flow diagram of at least one embodiment ofthe methods of FIG. 6-8.

DETAILED DESCRIPTION OF THE DRAWINGS

While the concepts of the present disclosure are susceptible to variousmodifications and alternative forms, specific embodiments thereof havebeen shown by way of example in the drawings and will be describedherein in detail. It should be understood, however, that there is nointent to limit the concepts of the present disclosure to the particularforms disclosed, but on the contrary, the intention is to cover allmodifications, equivalents, and alternatives consistent with the presentdisclosure and the appended claims.

References in the specification to “one embodiment,” “an embodiment,”“an illustrative embodiment,” etc., indicate that the embodimentdescribed may include a particular feature, structure, orcharacteristic, but every embodiment may or may not necessarily includethat particular feature, structure, or characteristic. Moreover, suchphrases are not necessarily referring to the same embodiment. Further,when a particular feature, structure, or characteristic is described inconnection with an embodiment, it is submitted that it is within theknowledge of one skilled in the art to effect such feature, structure,or characteristic in connection with other embodiments whether or notexplicitly described. Additionally, it should be appreciated that itemsincluded in a list in the form of “at least one A, B, and C” can mean(A); (B); (C): (A and B); (B and C); (A and C); or (A, B, and C).Similarly, items listed in the form of “at least one of A, B, or C” canmean (A); (B); (C): (A and B); (B and C) (A and C); or (A, B, and C).

The disclosed embodiments may be implemented, in some cases, inhardware, firmware, software, or any combination thereof. The disclosedembodiments may also be implemented as instructions carried by or storedon one or more transitory or non-transitory machine-readable (e.g.,computer-readable) storage medium, which may be read and executed by oneor more processors. A machine-readable storage medium may be embodied asany storage device, mechanism, or other physical structure for storingor transmitting information in a form readable by a machine (e.g., avolatile or non-volatile memory, a media disc, or other media device).

In the drawings, some structural or method features may be shown inspecific arrangements and/or orderings. However, it should beappreciated that such specific arrangements and/or orderings may not berequired. Rather, in some embodiments, such features may be arranged ina different manner and/or order than shown in the illustrative figures.Additionally, the inclusion of a structural or method feature in aparticular figure is not meant to imply that such feature is required inall embodiments and, in some embodiments, may not be included or may becombined with other features.

Referring now to FIG. 1, a system 100 for protocol execution withaggregation and caching includes a command device 102, a network 104,one or more aggregation systems 106, one or more computing devices 108,and a cache store 110. Additionally, as shown in the illustrativeembodiment, each of the aggregation systems 106 may include one or moreaggregation devices 112.

As described in detail below, in the illustrative embodiment, thecommand device 102 may handle the secure distribution of updates tocomputing devices 108, the establishment of secure key agreements (e.g.,between the command device 102 and the computing devices 108), and/orperform other management-related functions. For example, the commanddevice 102 may serve as a central command and control center (e.g., in acloud network) and/or may be configured to execute various managementprotocols between the command device 102 and the computing devices 108.In doing so, the command device 102 may broadcast messages (e.g.,protocol messages) to the computing devices 108, receive status messagesand/or other response messages, and retrieve data stored in the cachestore 110 by the computing devices 108 (e.g., to complete or furtherexecution of a protocol between the command device 102 and the computingdevices 108).

In some embodiments, the command device 102 may broadcast protocolmessages to one or more aggregation systems 106 and utilize theaggregation systems 106 to further broadcast the protocol messages tothe computing devices 108 (e.g., using a tree-based or otherhierarchical approach). For example, in a tree-based approach, thecommand device 102 may broadcast a message to a high-level (parent)aggregation device 112 of an aggregation system 106, which furtherbroadcasts the message to its children aggregation devices 112. Thechildren aggregation devices 112 further broadcast the message to theirchildren (i.e., the grandchildren devices of the high-level aggregationdevice 112), and so on. The low-level aggregation devices 112 thentransmit the message to the computing devices 108 (the endpoint nodes).Of course, in other embodiments, the system 100 and/or the aggregationsystems 106 may utilize a different scheme to broadcast information(e.g., protocol messages) from the command device 102 to the computingdevice 108.

The computing devices 108 may then execute an operation of the protocolbased on the received protocol message and store the response to thecache store 110. As described below, it should be appreciated that theparticular operation executed and the response stored may varysignificantly depending on the particular protocol being executedbetween the command device 102 and the corresponding computing device108. Additionally, the cache store 110 may be embodied as any device,component, and/or structure configured to store data received from acomputing device 108 and accessible to the command device 102. Forexample, in some embodiments, the computing device 108 may publish theresponse to a storage location associated with a particular UniformResource Locator (URL) known to the command device 102. Although thecache store 110 is shown in FIG. 1 as a single independent component, insome embodiments, the cache store 110 may be embodied as multiplecomponents and/or form a portion of one or more of the aggregationsystems 106 or computing devices 108. For example, in some embodiments,a computing device 108 may publish its protocol responses to a cachestore 110 located on memory or data storage of the computing device 108itself. In other embodiments, the aggregation devices 112, and/orseparate caching servers (not shown) may be utilized to store theprotocol responses.

In response to execution of the protocol operation(s) by the computingdevices 108, the corresponding aggregation systems 106 may receivestatus messages from the computing devices 108 that indicate whether theoperation was a success or failure. In the illustrative embodiment, eachaggregation system 106 aggregates the status messages to generate anaggregated status message for transmission to the command device 102. Asdescribed below, the aggregated status message uniquely identifies thecomputing devices 108 that failed to execute the protocol operation butidentify the success of the remaining computing devices 108 with asingle identifier (see FIG. 7). In other words, the aggregation system106 may aggregate responses incoming from the computing devices 108(e.g., by sorting and removing duplicates). In particular, eachaggregation device 112 may aggregate the status responses received fromits children or lower-level computing devices 108 and/or theintermediately aggregated status responses received from its childrenaggregation devices 112. That is, each of the aggregation systems 106may include one or more aggregation devices 112, which may workcooperatively with one another to broadcast protocol messages to acorresponding set of computing devices 108 and/or aggregate statusmessages received from the computing devices 108 and/or “lower-level”aggregation devices 112 into an aggregated status message.

Based on the received aggregated status message(s), the command device102 may determine which computing devices 108 successfully performed thecorresponding protocol operation. Additionally, the command device 102may retrieve the protocol response message published by a particularcomputing device 108 to the cache store 110 at a point in time at whichthe command device 102 is ready to continue execution of the protocol.As such, the command device 102 may execute a protocol with manycomputing devices 108 (e.g., millions of devices) and handle other tasks(e.g., critical tasks for other computing devices 108) until the commanddevice 102 determines it is necessary or prudent to complete/continueexecution of the protocol with a particular computing device 108. Atthat point, the command device 102 may retrieve the protocol responseand complete/continue the protocol accordingly. In such a way, it is notnecessary for the command device 102 to expend the time and/or resourcesto complete the execution of the protocol with the computing devices 108in advance.

The command device 102, each of the computing devices 108, and each ofthe aggregation devices 112 may be embodied as any type of computingdevice capable of performing the functions described herein. Forexample, each of the devices 102, 108, 112 may be embodied as a desktopcomputer, server, router, switch, laptop computer, tablet computer,notebook, netbook, Ultrabook™, cellular phone, smartphone, wearablecomputing device, personal digital assistant, mobile Internet device,Hybrid device, and/or any other computing/communication device. Althoughonly one command device 102, one network 104, and one cache store 110are illustratively shown in FIG. 1, the system 100 may include anynumber of command devices 102, networks 104, and/or cache stores 110 inother embodiments. For example, in some embodiments, the aggregationsystems 106 may include or more networks 104 (e.g., for communicationbetween the aggregation devices 112 of the corresponding aggregationsystem 106). Further, as described herein, the cache store 110 may bedistributed across multiple devices in some embodiments.

Referring now to FIG. 2, an illustrative embodiment of the commanddevice 102 is shown. As shown, the illustrative command device includesa processor 210, an input/output (“I/O”) subsystem 212, a memory 214, adata storage 216, a communication circuitry 218, and one or moreperipheral devices 220. Of course, the command device 102 may includeother or additional components, such as those commonly found in atypical computing device (e.g., various input/output devices and/orother components), in other embodiments. Additionally, in someembodiments, one or more of the illustrative components may beincorporated in, or otherwise form a portion of, another component. Forexample, the memory 214, or portions thereof, may be incorporated in theprocessor 210 in some embodiments.

The processor 210 may be embodied as any type of processor capable ofperforming the functions described herein. For example, the processor210 may be embodied as a single or multi-core processor(s), digitalsignal processor, microcontroller, or other processor orprocessing/controlling circuit. Similarly, the memory 214 may beembodied as any type of volatile or non-volatile memory or data storagecapable of performing the functions described herein. In operation, thememory 214 may store various data and software used dining operation ofthe command device 102 such as operating systems, applications,programs, libraries, and drivers. The memory 214 is communicativelycoupled to the processor 210 via the I/O subsystem 212, which may beembodied as circuitry and/or components to facilitate input/outputoperations with the processor 210, the memory 214, and other componentsof the command device 102. For example, the I/O subsystem 212 may beembodied as, or otherwise include, memory controller hubs, input/outputcontrol hubs, firmware devices, communication links (i.e.,point-to-point links, bus links, wires, cables, light guides, printedcircuit board traces, etc.) and/or other components and subsystems tofacilitate the input/output operations. In some embodiments, the I/Osubsystem 212 may form a portion of a system-on-a-chip (SoC) and beincorporated, along with the processor 210, the memory 214, and othercomponents of the command device 102, on a single integrated circuitchip.

The data storage 216 may be embodied as any type of device or devicesconfigured for short-term or long-term storage of data such as, forexample, memory devices and circuits, memory cards, hard disk drives,solid-state drives, or other data storage devices. The data storage 216and/or the memory 214 may store various data during operation of thecommand device 102 useful for performing the functions described herein.

The communication circuitry 218 may be embodied as any communicationcircuit, device, or collection thereof, capable of enablingcommunications between the command device 102 and other remote devices(e.g., the aggregation devices 112 of the aggregation systems 106). Thecommunication circuitry 218 may be configured to use any one or morecommunication technologies (e.g., wireless or wired communications) andassociated protocols (e.g., Ethernet, Bluetooth®, Wi-Fi®, WiMAX, etc.)to effect such communication.

The peripheral devices 220 may include any number of additionalperipheral or interface devices, such as speakers, microphones,additional storage devices, and so forth. The particular devicesincluded in the peripheral devices 220 may depend on, for example, thetype and/or intended use of the command device 102. For example, in someembodiments, the command device 102 may be embodied as a server that hasno peripheral devices 220,

Referring back to FIG. 1, the network 104 may be embodied as any type ofcommunication network capable of facilitating communication between thecommand device 102 and remote devices (e.g., the aggregation devices 112of the aggregation systems 106). As such, the network 104 may includeone or more networks, routers, switches, computers, and/or otherintervening devices. For example, the network 104 may be embodied as orotherwise include one or more cellular networks, telephone networks,local or wide area networks, publicly available global networks (e.g.,the Internet), an ad hoc network, or any combination thereof.

As indicated above, each of the computing devices 108 and each of theaggregation devices 112 may be embodied as any server or computingdevice capable of performing the functions described herein. Forexample, the devices 108, 112 may similar to the command device 102. Inparticular, the computing devices 108 and/or the aggregation devices 112may include components similar to the components of the command device102 described above and/or components commonly found in a computingdevice such as a processor, memory, I/O subsystem, data storage,peripheral devices, and so forth, which are not illustrated in FIG. 1for clarity of the description.

Referring now to FIG. 3, in use, the command device 102 establishes anenvironment 300 for protocol execution. The illustrative environment 300includes a protocol management module 302 and a communication module304. Additionally, the protocol management module 302 includes abroadcast module 306 and a data retrieval module 308 and, in someembodiments, may include a cryptography module 310. The various modulesof the environment 300 may be embodied as hardware, software, firmware,or a combination thereof. For example, the various modules, logic, andother components of the environment 300 may form a portion of, orotherwise be established by, the processor 210 or other hardwarecomponents of the command device 102. As such, in some embodiments, oneor more of the modules of the environment 300 may be embodied as acircuit or collection of electrical devices (e.g., a protocol managementcircuit, a communication circuit, a broadcast circuit, a data retrievalcircuit, and/or a cryptography circuit). Additionally, in someembodiments, one or more of the illustrative modules may form a portionof another module and/or one or more of the illustrative modules may beembodied as a standalone or independent module.

The protocol management module 302 is configured to perform variousfunctions associated with the execution of a protocol between thecommand device 102 and other devices (e.g., the computing devices 108).It should be appreciated that the particular functions performed by theprotocol management module 302 may vary depending on the particularprotocol. For example, a simple protocol may involve the transmission ofa message to a computing device 108 (e.g., via one or more aggregationsystems 106) and a response of the computing device 108 to the commanddevice 102 based on execution of an operation associated with theprotocol or, more particularly, the transmitted message. As describedabove, a protocol status message may be transmitted to the commanddevice 102, which may be aggregated with the status messages of othercomputing devices 108 depending on the particular circumstances (e.g.,depending on whether the operation was successful or a failure).Additionally, the computing device 108 may publish the actual responseto the simple protocol message to the cache store 110 (e.g., a knownURL). If the protocol is a Diffie-Hellmann Key Exchange, for example,the computing device 108 may receive the Diffie-Hellmann public key ofthe command device 102 (e.g., in a broadcasted message), generate theshared Diffie-Hellmann key based on its private Diffie-Hellman key, andpublish its Diffie-Hellmann public key to the cache store 110 forsubsequent access by the command device 108 (i.e., for subsequentgeneration of the shared Diffie-Hellmann key). Of course, the protocolmanagement module 302 may perform various other functions in order tomanage the execution of other protocols in other embodiments. In otherwords, in some embodiments, the protocol management module 302 mayperform protocol-specific functions (e.g., for cryptographic keyexchanges, broadcast encryption, etc.). Additionally, in someembodiments, the protocol management module 302 may authorize a gatewaydevice to manage or execute a protocol on behalf of the command device102 as described below.

As discussed above, the illustrative protocol management module 302includes a broadcast module 306 and a data retrieval module 308 and, insome embodiments, may include a cryptography module 310. The broadcastmodule 306 handles the broadcasting of protocol messages to variouscomputing devices 108 (e.g., via the communication module 304). As such,in the illustrative embodiment, the broadcast module 306 may determinethe interrelationships of the various devices of the system 100. Inparticular, the broadcast module 306 may determine the hierarchicalrelationships of the aggregation system(s) 106 (e.g., a tree-basedhierarchy) and/or otherwise determine the aggregation devices 112 towhich to transmit a particular protocol message in order to ensure thatit is received by one or more particular computing devices 108. In someembodiments, the command device 102 may intend to broadcast a particularprotocol message to all computing devices 108 in the system 100 in whichcase the broadcast module 306 may transmit the protocol message to eachof the aggregation systems 106 for further dissemination. In otherembodiments, the broadcast module 306 may identify a subset of computingdevices 108 of the system 100 that should receive a particular protocolmessage and transmit the message to the appropriate aggregationsystem(s) 106 or directly to the computing device(s) 108 accordingly.

The data retrieval module 308 handles the retrieval of data from thecache store 110. As discussed above, the computing devices 108 maypublish (e.g., to a URL) or otherwise store responses to protocolmessages received from the command device 102 (e.g., via the aggregationsystems 106). As such, the data retrieval module 308 may determine thestorage location within the cache store 110 at which to retrieve aresponse to a particular protocol message. In some embodiments, thecommand device 102 and the computing devices 108 utilize a specificnaming and/or storage scheme so that the computing devices 108 storeresponse data at locations from which the command device 102 expects toretrieve the data. In other embodiments, the broadcast module 306 of thecommand device 102 may identify the location at which the computingdevice 108 is to store/publish the response data in the broadcastedprotocol message. It should be appreciated that, in some embodiments,multiple protocol messages between the command device 102 and aparticular computing device 108 (e.g., “rounds”) may be independent ofone another such that the computing device 108 may perform operationsassociated with a “second” protocol message without having performedoperations associated with a “first” protocol message. As such, theprotocol may be decomposed into a sequence of protocol executions/roundsthat may be broadcasted to the computing device 108 without interveninginput from the command device 102. In those embodiments, the computingdevice 108 may publish/store the responses to the multiple rounds at thesame storage location of the cache store 110 or at different (e.g.,uniquely identifiable) storage locations of the cache store 110.Further, in some embodiments, the computing device 108 may store afailure log and/or other information associated with protocol executionin the cache store 110 and accessible to the command device 102.

The cryptography module 310 may perform various security-relatedfunctions (e.g., attestation and cryptography) for the command device102. As indicated above, the particular cryptographic functionsperformed by the cryptography module 310 may vary depending on theparticular embodiment (e.g., depending on the particular protocolexecuted by the command device 102). In various embodiments, thecryptography module 310 may perform encryption/decryption, cryptographicsignatures, cryptographic key generation (e.g., asymmetric and/orsymmetric key generation), cryptographic hash generation, and/or othercryptographic functions. Further, in some embodiments, the cryptographymodule 310 may be configured to establish a trusted executionenvironment. For example, in some embodiments, the cryptography module310 may be embodied as a security co-processor, such as a trustedplatform module (TPM), a secure enclave such as Intel® Software GuardExtensions (SGX), or an out-of-band processor. Additionally, in someembodiments, the cryptography module 310 may establish an out-of-bandcommunication link with remote devices.

The communication module 304 handles the communication between thecommand device 102 and remote computing devices (e.g., the aggregationsystems 106, the computing devices 108, the cache store 110, etc.)through the network 104. For example, as described herein, thecommunication module 304 may broadcast protocol messages to thecomputing devices 108 (e.g., through the aggregation systems 106) andretrieve responses of the computing devices 108 from the cache store110.

Referring now to FIG. 4, in use, each aggregation device 112 establishesan environment 400 for protocol execution. The illustrative environment400 includes a broadcast module 402, an aggregation module 404, and acommunication module 406. The various modules of the environment 400 maybe embodied as hardware, software, firmware, or a combination thereof.For example, the various modules, logic, and other components of theenvironment 400 may form a portion of, or otherwise be established by,the processor or other hardware components of the aggregation device112. As such, in some embodiments, one or more of the modules of theenvironment 400 may be embodied as a circuit or collection of electricaldevices (e.g., a broadcast circuit, an aggregation circuit, and/or acommunication circuit). Additionally, in some embodiments, one or moreof the illustrative modules may form a portion of another module (e.g.,the broadcast module 402 may form a portion of the communication module406).

The broadcast module 402 handles the broadcasting of protocol messagesreceived from the command device 102 and/or a higher-level aggregationdevice 112 to lower-level aggregation devices 112 and/or computingdevices 108 (e.g., via the communication module 406). As describedabove, the aggregation device 112 may form a portion of a particularaggregation system 106 in some hierarchical arrangement relative to theother aggregation devices 112 of the aggregation system 106 (e.g., in atree-based hierarchy). Accordingly, in the illustrative embodiment, thebroadcast module 402 transmits received protocol messages to otheraggregation devices 112 further “down” the hierarchy or directly to thecomputing device(s) 108 depending on the position of the aggregationdevice 112 in the hierarchy. In some embodiments, the received protocolmessages may have particular recipients in which case the broadcastmodule 402 may determine its hierarchical relationship relative to otherdevices in order to transmit the protocol messages to the appropriatedestination(s). For example, the broadcast module 402 may determine itshierarchical relationship relative to other aggregation devices 112within the same aggregation system 106, relative to other aggregationsystems 106 or the devices 112 therein, relative to the command device102, and/or relative to the computing devices 108.

The aggregation module 404 is configured to aggregate status messagesassociated with the success/failure of protocol execution by thecomputing devices 108. In particular, a computing device 108 may attemptto perform operations (e.g., execute particular instructions) associatedwith a protocol message received from the command device 102 (e.g.,through the aggregation systems 106) and generate a status message thatindicates whether the operations were performed successfully. Asdiscussed above, in the illustrative embodiment, the aggregation device112 occupies a particular hierarchical position in the correspondingaggregation system 106. Depending on the particular embodiment (e.g.,the particular hierarchical position), the aggregation module 404 of theaggregation device 112 aggregates the status messages received from thecorresponding computing devices 108 and/or lower level aggregationdevices 112 (e.g., within the same aggregation system 106) into a singleaggregated status message. For clarity, the aggregated status messagesgenerated by aggregation devices 112 other than the highest-levelaggregation devices 112 of an aggregation system 106 (or of the system100 generally) may be described herein as intermediate aggregated statusmessages. As described herein, in aggregating the lower-level statusmessages, the aggregation module 404 removes duplicate status messagesand/or other data duplication. For example, in some embodiments, theaggregation module 404 generates an aggregated status message based onthe received status messages (or intermediate aggregated statusmessages) in which the aggregated status message uniquely identifies thecomputing devices 108 that failed and identifies the success of theremaining computing devices 108 with a single success identifier (seeFIG. 7).

The communication module 406 handles the communication between theaggregation device 112 and remote computing devices (e.g., the commanddevice 102, other aggregation devices 112, etc.) through one or morenetworks (e.g., the network 104). For example, as described herein, thecommunication module 406 may broadcast protocol messages to lower-levelaggregation devices 112 and/or the computing devices 108 and transmitaggregated status messages to the command device 102 and/or higher-levelaggregation devices 112.

Referring now to FIG. 5, in use, each computing device 108 establishesan environment 500 for protocol execution. The illustrative environment500 includes a protocol execution module 502 and a communication module504. Additionally, the protocol execution module 502 includes apublication module 506 and a status module 508 and, in some embodiments,may include a cryptography module 510. The various modules of theenvironment 500 may be embodied as hardware, software, firmware, or acombination thereof. For example, the various modules, logic, and othercomponents of the environment 500 may form a portion of, or otherwise beestablished by, the processor or other hardware components of thecomputing device 108. As such, in some embodiments, one or more of themodules of the environment 500 may be embodied as a circuit orcollection of electrical devices (e.g., a protocol execution circuit, acommunication circuit, a publication circuit, a status circuit, and/or acryptography circuit). Additionally, in some embodiments, one or more ofthe illustrative modules may form a portion of another module and/or oneor more of the illustrative modules may be embodied as a standalone orindependent module.

The protocol execution module 502 is configured to perform variousfunctions associated with the execution of a protocol between thecomputing device 108 and other devices (e.g., the command device 102).Similar to the protocol management module 302 described above, theparticular functions performed by the protocol execution module 502 ofthe computing device 108 may vary depending on the particular protocol.For example, as described above, some protocols may involve thegeneration and/or exchange of cryptographic keys, whereas otherprotocols may require the performance of other functions by the protocolexecution module 502.

As discussed above, the illustrative protocol execution module 502includes a publication module 506 and a status module 508 and, in someembodiments, may include a cryptography module 510. The publicationmodule 506 publishes and/or otherwise stores responses to protocolmessages received from the command device 102 (e.g., via the aggregationsystems 106). In particular, in the illustrative embodiment, thepublication module 506 stores responses to protocol messages in thecache store 110 for subsequent access by the command device 102. Forexample, as described above, the publication module 506 may publish theresponse to a storage location associated with a particular URL known tothe command device 102. In some embodiments, the storage location may bepredetermined by the computing device 108 and/or the command device 102,for example, according to an understood naming and storage scheme.Further, as described above, the command device 102 may broadcast astorage location at which the computing device 108 is to store aparticular protocol response in some embodiments. Additionally, in someembodiments, the publication module 506 may store a protocol executionlog that describes the protocol operations performed by the computingdevice 108 and/or results of protocol operations (e.g., a failure log).In some embodiments, the command device 102 may subsequently access theprotocol execution log (e.g., to remedy failed execution of a protocoloperation).

The status module 508 transmits status messages regarding the status ofexecution of one or more operations associated with a protocol messagereceived from the command device 102. For example, in the illustrativeembodiment, the status module 508 determines whether a protocoloperation corresponding with a protocol message was successful,generates a status response message that indicates the success orfailure of the protocol operation, and transmits the status responsemessage to the command device 102. As described above, in theillustrative embodiment, the computing device 108 transmits the statusmessage to the corresponding aggregation system 106 of the computingdevice 108, which aggregates the status message of the computing device108 with status messages of other computing devices 108 to generate anaggregated status message for the command device 102.

The cryptography module 510 may perform various security-relatedfunctions (e.g., attestation and cryptography) for the computing device108. In some embodiments, the cryptography module 510 may be similar tothe cryptography module 310 of the command device 102 described above.As such, in various embodiments, the cryptography module 510 may performencryption/decryption, cryptographic signatures, cryptographic keygeneration (e.g., asymmetric and/or symmetric key generation),cryptographic hash generation, and/or other cryptographic functions.Further, in some embodiments, the cryptography module 510 may beconfigured to establish a trusted execution environment, and/or may beembodied as a security co-processor, such as a trusted platform module(TPM), a secure enclave such as Intel® Software Guard Extensions (SGX),or an out-of-band processor. Additionally, in some embodiments, thecryptography module 510 may establish an out-of-band communication linkwith remote devices.

The communication module 504 handles the communication between thecomputing device 108 and remote computing devices (e.g., the aggregationsystems 106, the cache store 110, the command device 102, etc.) throughthe network 104. For example, as described herein, the communicationmodule 504 may receive broadcasted protocol message from the commanddevice 102 (e.g., through the aggregation systems 106), publish protocolmessage responses to the cache store 110, and/or transmit statusmessages to the command device 102 (e.g., in aggregated form via theaggregation systems 106).

Referring now to FIG. 6, in use, the command device 102 may execute amethod 600 for protocol execution. The illustrative method 600 beginswith block 602 in which the command device 102 broadcasts a protocolmessage to one or more computing devices 108. As described above, insome embodiments, the system 100 may include one or more interveningaggregation systems 106 that may cooperate with one another to broadcastprotocol messages from the command device 102 to a plurality ofcomputing devices 108. In doing so, it should be appreciated that theaggregation systems 106 may reduce the network and/or resource load onthe command device 102 associated with communicating with each of thecomputing devices 108 individually. As such, in block 604, the commanddevice 102 transmits the protocol message to the aggregation system(s)106 (see data flow 902 of method 900 of FIG. 9) for further broadcastingto the computing devices 108 (see data flow 904 of method 900 of FIG.9). In particular, in the illustrative embodiment, the command device102 transmits the protocol message to the highest-level aggregationdevice(s) 112 in each of the corresponding aggregation systems 106. Asdiscussed above, in some embodiments, the protocol message is directedto only a subset of computing devices 108 of the system 100, in whichcase the command device 102 may broadcast the protocol message to theappropriate aggregation systems 106 and notify those aggregation systems106 of the destination computing devices 108.

As described herein, in the illustrative embodiment, each of therecipient computing devices 108 may perform a protocol operationassociated with the received protocol message, publish a response to thecache store 110, and transmit a status message to the aggregationsystem(s) 106. Further, in the illustrative embodiment, the aggregationsystem(s) 106 aggregate the status messages of multiple computingdevices 108 into one or more aggregated status messages as describedabove. Accordingly, the command device 102 receives the aggregatedstatus message(s) from the aggregation system(s) 106 in block 606 (seedata flow 912 of method 900 of FIG. 9).

In block 608, the command device 102 determines whether to continueexecution of the protocol (i.e., the protocol associated with thebroadcasted protocol message) with a particular computing device 108. Ifso, in block 610, the command device 102 retrieves the computing device108's response to the protocol message from the cache store 110. Asdiscussed above, the storage location of the particular response in thecache store 110 is known and accessible to the command device 102. Forexample, in block 612, the command device 102 may retrieve the protocolmessage response from a known URL to which the computing device 108published the response. It should be appreciated that, in someembodiments, a significant amount of time may lapse between receipt ofthe aggregated status message by the command device 102 and retrieval ofthe protocol message response by the command device 102. As such, insome embodiments, the command device 102 may determine to continueprotocol execution with a particular computing device 108 at aconvenient time depending on the particular protocol. For example, for acryptographic key exchange protocol, the command device 102 may retrievea cryptographic key of the computing device 108 from the cache store 110when the cryptographic key is needed by the command device 102 (e.g., tosecurely communicate with the computing device 108).

Referring now to FIG. 7, in use, the aggregation system 106 may executea method 700 for protocol execution. It should be appreciated that themethod 700 depicts data flows that may be employed in a tree-basedhierarchy to aggregate the status messages of the correspondingcomputing devices 108. As shown in FIG. 7, the method 700 depicts fourcomputing devices 108 (D1, D2, D3, and D4), an aggregation system 106including three aggregation devices 112, and the command device 102. Itshould be appreciated that those quantities of devices are depicted inFIG. 7 for simplicity and clarity of the description. However, in otherembodiments, the system 100 may include any number of computing devices108, aggregation systems 106, and aggregation devices 112 as describedabove in which similar principles may be employed. Further, theaggregation systems 106 and/or the aggregation devices 112 may bearranged in any suitable hierarchical relationship/structure.

As shown in the illustrative embodiment of FIG. 7, the aggregationsystem 106 receives status messages from each of the four computingdevices 108 (see data flow 908 of method 900 of FIG. 9). In particular,a first aggregation device 112 receives status messages from thecomputing devices 108 D1 and D2 that indicate success (OK) and failure(FAIL(D2)) of the corresponding protocol operations, respectively.Further, a second aggregation device 112 receives status messages fromthe computing devices 108 D3 and D4 that indicate success (OK) andfailure (FAIL(D4)) of the corresponding protocol operations,respectively. As shown, the first aggregation device 112 aggregates thestatus messages of the computing devices 108 D1 and D2 into a singleaggregated status message (OK, FAIL(D2)) and transmits that aggregatedstatus message to the third aggregation device 112. Similarly, thesecond aggregation device 112 aggregates the status messages of thecomputing devices 108 D3 and D4 into a single aggregated status message(OK, FAIL(D4)) and transmits that aggregated status message to the thirdaggregation device 112. In the illustrative embodiment, the thirdaggregation device 112 aggregates the intermediate aggregated statusmessages received from the first and second aggregation devices 112 intoanother aggregated status message (OK, FAIL(D2), FAIL(D4)), which istransmitted to the command device 102. As described above, in theillustrative embodiment, the aggregation devices 112 of the aggregationsystem 106 aggregate the status messages by removing duplicate statusmessages that identify protocol execution success and maintaining uniqueidentifiers of computing devices 108 that failed to execute the protocol(see data flow 910 of method 900 of FIG. 9).

It should be appreciated that the aggregated status messages generatedby the first and second aggregation devices 112 may be described hereinas an intermediate aggregation status message in order to distinguishthe aggregated status message from the aggregated status messagegenerated by the third aggregation device 112, which is transmitted tothe command device 102. Additionally, in more complex hierarchies, itshould be appreciated that a particular aggregation device 112 mayreceive status messages from any combination of other aggregationdevices 112 and/or computing devices 108.

Referring now to FIG. 8, in use, one or more of the computing devices108 may execute a method 800 for protocol execution. The illustrativemethod 800 begins with block 802 in which the computing device 108receives a protocol message from the corresponding aggregation system106. As described above, in the illustrative embodiment, the commanddevice 102 utilizes the aggregation system 106 to broadcast the protocolmessage to the computing device 108 and the protocol message isassociated with the execution of a protocol between the command device102 and the computing device 108. As such, the computing device 108 mayperform (or attempt to perform) the corresponding protocol operationbased on the protocol message and publish a response to the protocolmessage to the cache store 110 in block 804 (see data flow 906 of method900 of FIG. 9). For example, in block 806, the computing device 108 maypublish the response to a URL known the command device 102 as describedabove. Of course, in some embodiments, the computing device 108 may beunable to execute the particular protocol operation in which case thecomputing device 108 may, for example, publish a failure log to thecache store 110 instead. In block 808, the computing device 108transmits a status message that indicates the success/failure of theprotocol execution to the corresponding aggregation system 106.

It should be appreciated that the techniques described herein may beemployed by the system 100 for aggregation and protocol response cachingduring protocol execution for any number of protocols executed betweenthe command device 102 and the computing devices 108. For example, asdescribed above, the techniques may be utilized during the execution ofa Diffie-Hellmann key exchange between the command device 102 and thecomputing devices 108. In such an embodiment, the command device 102 mayselect a prime number, p, and determine a primate root or generator, g(mod p). Further, the command device 102 may select another integer, a,as its private Diffie-Hellmann key and calculate its publicDiffie-Hellmann key as A=g^(a) mod p. The command device 102 broadcaststhe public Diffie-Hellmann key, A, as well as the generator, g, and theprime number, p, to one or more of the computing devices 108 (e.g.,through the aggregation system(s) 106). One of the computing devices 108may then select an integer, b, as its own private Diffie-Hellmann keyand calculate its public Diffie-Hellmann key as B=g^(b) mod p. Further,the computing device 108 may calculate the shared Diffie-Hellmann key(A^(b)=g^(ab)) for secure communication and store that key.Additionally, the computing device 108 may publish its publicDiffie-Hellmann key, B, to the cache store 110 (e.g., a known URL) andtransmit a status message to the aggregation system 106 indicating thatthe protocol operation was successfully executed (“OK”). As such, thecommand device 102 may subsequently retrieve the public Diffie-Hellmankey of the computing device 108 from the cache store 110, calculate theshared Diffie-Hellmann key (B^(a)=g^(ab)), and securely communicate withthe computing device 108 using the shared cryptographic key. Of course,as described above, if the computing device 108 is unable tosuccessfully perform the relevant protocol operations, the computingdevice 108 may instead publish a failure log to the cache store 110 andindicate that protocol execution was a failure in the protocol statusmessage.

In another embodiment, the command device 102 may utilize the techniquesdescribed herein to efficiently establish cryptographic keys for abroadcast encryption scheme. It should be appreciated that in abroadcast encryption scheme, the cryptographic keys may be structured ina hierarchy to allow broadcasting to subsets of entities (e.g.,associated with particular cryptographic keys). In some embodiments, thesystem 100 may be structured as a tree-based hierarchy in which eachentity of the system 100 may be considered to be a node such that thecommand device 102 (Node N) is the highest-level node, the nextlower-level nodes are identified as Nodes N₀, N₁, the next lower-levelnodes are identified as Nodes N₀₀, N₀₁, N₁₀, and N₁₁, and so on (N₀₀ andN₀₁ being children of N₀ and N₁₀ and N₁₁ being children of N₁). In suchembodiments, each node N_(xy) generates a cryptographic key pairPK(N_(xy)) and SK(N_(xy)). Further, PK(N_(xy)) is broadcasted to thechildren of the node N_(xy) and published to the cache store 110 (e.g.,a particular URL) and associated with N_(xy) (e.g., URL(N_(xy))). Itshould be appreciated that the goal of such key distribution is toensure that each child node has the public keys of its ancestors. Insuch embodiments, in order to broadcast an encrypted message to all ofthe nodes, for example, the command device 102 (i.e., node N) or anothercomputing device may retrieve PK(N) from the cache store 110 (e.g., atURL(N)), encrypt the message under PK(N), and broadcast the encryptedmessage to all of the nodes. It should be appreciated that, in someembodiments, one or more cryptographic keys may be revoked and the keyson the “path” to the revoked nodes may be revoked. Instead, the highestremaining cryptographic keys may be utilized to broadcast messages. Forexample, when the cryptographic key for N₁₀ is revoked, the keys PK(N₀)and PK(N₁₁) may be used to encrypt future broadcasted messages.

In some embodiments, it should be appreciated that the command device102 may delegate authority to execute a protocol between the commanddevice 102 and one or more computing devices 108 to a gateway device. Insuch embodiments, the gateway device may communicate with a particularcomputing device 108 to execute one or more rounds of a protocol andstore the results of the protocol execution for subsequent access by thecommand device 102. For example, the gateway device may generate aprotocol transcript identifying the functions performed, communicationstransmitted/received, results, and/or other information associated withthe delegated protocol execution. Further, in some embodiments, thegateway device and/or the corresponding computing device 108 may publishthe transcript to the cache store 110 at a storage location known andaccessible to the command device 102.

EXAMPLES

Illustrative examples of the technologies disclosed herein are providedbelow. An embodiment of the technologies may include any one or more,and any combination of, the examples described below.

Example 1 includes a command device for protocol execution, the commanddevice comprising a broadcast module to broadcast a protocol message toa plurality of computing devices; and a communication module to receivean aggregated status message from an aggregation system, wherein theaggregated status message identifies a success or failure of executionof instructions corresponding with the protocol message by the pluralityof computing devices such that each computing device of the plurality ofcomputing devices that failed is uniquely identified and the success ofremaining computing devices is aggregated into a single successidentifier.

Example 2 includes the subject matter of Example 1, and furtherincluding a data retrieval module to retrieve, from a cache store, aresponse to the protocol message of a computing device of the pluralityof computing devices, wherein the cache store is to store responses ofthe plurality of computing devices to the protocol message forsubsequent access to the responses by the command device.

Example 3 includes the subject matter of any of Examples 1 and 2, andwherein to retrieve the response from the cache store comprises toretrieve the response from a cache store accessed at a uniform resourcelocator known to both the command device and the corresponding computingdevice.

Example 4 includes the subject matter of any of Examples 1-3, andwherein to broadcast the protocol message comprises to identify astorage location of the cache store at which each computing device ofthe plurality of computing devices is to store a response to theprotocol message.

Example 5 includes the subject matter of any of Examples 1-4, andwherein to broadcast the protocol message comprises to broadcast a firstprotocol message of a multi-round protocol; and wherein the broadcastmodule is further to broadcast a second protocol message of themulti-round protocol to the plurality of computing devices prior toretrieval of the response to the first protocol message.

Example 6 includes the subject matter of any of Examples 1-5, andfurther including a data retrieval module to retrieve, from a cachestore, a failure log of a computing device of the plurality of computingdevices in response to an indication by the aggregated status messagethat the computing device failed to execute the instructions.

Example 7 includes the subject matter of any of Examples 1-6, andwherein to broadcast the protocol message comprising to broadcast theprotocol message to at least one aggregation device of an aggregationsystem to be further broadcasted to the plurality of computing devices.

Example 8 includes a method for protocol execution by a command device,the method comprising broadcasting, by the command device, a protocolmessage to a plurality of computing devices; and receiving, by thecommand device, an aggregated status message from an aggregation system,wherein the aggregated status message identifies a success or failure ofexecution of instructions corresponding with the protocol message by theplurality of computing devices such that each computing device of theplurality of computing devices that failed is uniquely identified andthe success of remaining computing devices is aggregated into a singlesuccess identifier.

Example 9 includes the subject matter of Example 8, and furtherincluding retrieving, by the command device and from a cache store, aresponse to the protocol message of a computing device of the pluralityof computing devices, wherein the cache store is to store responses ofthe plurality of computing devices to the protocol message forsubsequent access to the responses by the command device.

Example 10 includes the subject matter of any of Examples 8 and 9, andwherein retrieving the response from the cache store comprisesretrieving the response from a cache store accessed at a uniformresource locator known to both the command device and the correspondingcomputing device.

Example 11 includes the subject matter of any of Examples 8-10, andwherein broadcasting the protocol message comprises identifying astorage location of the cache store at which each computing device ofthe plurality of computing devices is to store a response to theprotocol message.

Example 12 includes the subject matter of any of Examples 8-11, andwherein broadcasting the protocol message comprises broadcasting a firstprotocol message of a multi-round protocol; and further comprisingbroadcasting a second protocol message of the multi-round protocol tothe plurality of computing devices prior to retrieving the response tothe first protocol message.

Example 13 includes the subject matter of any of Examples 8-12, andfurther including retrieving, by the command device and from a cachestore, a failure log of a computing device of the plurality of computingdevices in response to the aggregated status message indicating that thecomputing device failed to execute the instructions.

Example 14 includes the subject matter of any of Examples 8-13, andwherein broadcasting the protocol message comprising broadcasting theprotocol message to at least one aggregation device of an aggregationsystem to be further broadcasted to the plurality of computing devices.

Example 15 includes a computing device comprising a processor; and amemory having stored therein a plurality of instructions that whenexecuted by the processor cause the computing device to perform themethod of any of Examples 8-14.

Example 16 includes one or more machine-readable storage mediacomprising a plurality of instructions stored thereon that, in responseto execution by a computing device, cause the computing device toperform the method of any of Examples 8-14.

Example 17 includes a command device for protocol execution, the commanddevice comprising means for broadcasting a protocol message to aplurality of computing devices; and means for receiving an aggregatedstatus message from an aggregation system, wherein the aggregated statusmessage identifies a success or failure of execution of instructionscorresponding with the protocol message by the plurality of computingdevices such that each computing device of the plurality of computingdevices that failed is uniquely identified and the success of remainingcomputing devices is aggregated into a single success identifier.

Example 18 includes the subject matter of Example 17, and furtherincluding means for retrieving, from a cache store, a response to theprotocol message of a computing device of the plurality of computingdevices, wherein the cache store is to store responses of the pluralityof computing devices to the protocol message for subsequent access tothe responses by the command device.

Example 19 includes the subject matter of any of Examples 17 and 18, andwherein the means for retrieving the response from the cache storecomprises means for retrieving the response from a cache store accessedat a uniform resource locator known to both the command device and thecorresponding computing device.

Example 20 includes the subject matter of any of Examples 17-19, andwherein the means for broadcasting the protocol message comprises meansfor identifying a storage location of the cache store at which eachcomputing device of the plurality of computing devices is to store aresponse to the protocol message.

Example 21 includes the subject matter of any of Examples 17-20, andwherein the means for broadcasting the protocol message comprises meansfor broadcasting a first protocol message of a multi-round protocol; andfurther comprising means for broadcasting a second protocol message ofthe multi-round protocol to the plurality of computing devices prior toretrieving the response to the first protocol message.

Example 22 includes the subject matter of any of Examples 17-21, andfurther including means for retrieving, from a cache store, a failurelog of a computing device of the plurality of computing devices inresponse to the aggregated status message indicating ⁻that the computingdevice failed to execute the instructions.

Example 23 includes the subject matter of any of Examples 17-22, andwherein the means for broadcasting the protocol message comprising meansfor broadcasting the protocol message to at least one aggregation deviceof an aggregation system to be further broadcasted to the plurality ofcomputing devices.

Example 24 includes a computing device for protocol execution, thecomputing device comprising a communication module to receive a protocolmessage from an aggregation system, wherein the protocol messagecorresponds with execution of a protocol between the computing deviceand a command device; and a protocol execution module to (i) publish aresponse to the protocol message to a cache store for subsequent accessby the command device and (ii) transmit a status message to theaggregation system, wherein the status message indicates a success orfailure of execution of instructions corresponding with the protocolmessage.

Example 25 includes the subject matter of Example 24, and wherein topublish the response comprises to publish the response to a cache storeaccessed at a uniform resource locator known to both the command deviceand the computing device.

Example 26 includes the subject matter of any of Examples 24 and 25, andwherein to publish the response comprises to publish a failure log tothe cache store in response to a failure to execute the instructionscorresponding with the protocol message.

Example 27 includes the subject matter of any of Examples 24-26, andwherein the protocol execution module is further to perform a protocoloperation associated with the received protocol message, wherein thepublished response is associated with the performed protocol operation.

Example 28 includes a method for protocol execution by a computingdevice, the method comprising receiving, by the computing device, aprotocol message from an aggregation system, wherein the protocolmessage corresponds with execution of a protocol between the computingdevice and a command device; publishing, by the computing device, aresponse to the protocol message to a cache store for subsequent accessby the command device; and transmitting, by the computing device, astatus message to the aggregation system, wherein the status messageindicates a success or failure of execution of instructionscorresponding with the protocol message.

Example 29 includes the subject matter of Examples 28, and whereinpublishing the response comprises publishing the response to a cachestore accessed at a uniform resource locator known to both the commanddevice and the computing device.

Example 30 includes the subject matter of any of Examples 27 and 28, andwhere publishing the response comprises publishing a failure log to thecache store in response to a failure to execute the instructionscorresponding with the protocol message.

Example 31 includes the subject matter of any of Examples 27-29, andfurther including performing, by the computing device, a protocoloperation associated with the received protocol message, wherein thepublished response is associated with the performed protocol operation.

Example 32 includes a computing device comprising a processor; and amemory having stored therein a plurality of instructions that whenexecuted by the processor cause the computing device to perform themethod of any of Examples 28-31.

Example 33 includes one or more machine-readable storage mediacomprising a plurality of instructions stored thereon that, in responseto execution by a computing device, cause the computing device toperform the method of any of Examples 28-31.

Example 34 includes a computing device for protocol execution, thecomputing device comprising means for receiving a protocol message froman aggregation system, wherein the protocol message corresponds withexecution of a protocol between the computing device and a commanddevice; means for publishing a response to the protocol message to acache store for subsequent access by the command device; and means fortransmitting a status message to the aggregation system, wherein thestatus message indicates a success or failure of execution ofinstructions corresponding with the protocol message.

Example 35 includes the subject matter of Example 34, and wherein themeans for publishing the response comprises means for publishing theresponse to a cache store accessed at a uniform resource locator knownto both the command device and the computing device.

Example 36 includes the subject matter of any of Examples 34 and 35, andwhere the means for publishing the response comprises means forpublishing a failure log to the cache store in response to a failure toexecute the instructions corresponding with the protocol message.

Example 37 includes the subject matter of any of Examples 34-36, andfurther including means for performing a protocol operation associatedwith the received protocol message, wherein the published response isassociated with the performed protocol operation.

Example 38 includes an aggregation system for protocol execution, theaggregation system comprising a plurality of aggregation devices, eachof the aggregation devices comprising a broadcast module to broadcastprotocol messages received from a command device to a plurality ofcomputing devices; and an aggregation module to aggregate statusmessages received from at least one of other aggregation devices orcomputing devices of the plurality of computing devices; wherein theaggregation system is to receive a status message from each computingdevice of the plurality of computing devices, wherein the status messageindicates a success or failure of a protocol operation by thecorresponding computing device that is associated with a protocolmessage of a protocol between the command device and the correspondingcomputing device; generate an aggregated status message based on thestatus messages received from the plurality of computing devices,wherein the aggregated status message uniquely identifies computingdevices that failed to perform the protocol operation and identifies thesuccess of remaining computing devices with a single success identifier;and transmit the aggregation status message to the command device.

Example 39 includes the subject matter of Example 38, and wherein theaggregation system is further to receive, from the command device, theprotocol message corresponding with execution of the protocol; andtransmit the protocol message to the plurality of computing devices.

Example 40 includes a method for protocol execution by an aggregationsystem, the method comprising receiving, by the aggregation system, astatus message from each computing device of a plurality of computingdevices, wherein the status message indicates a success or failure of aprotocol operation by the corresponding computing device that isassociated with a protocol message of a protocol between a commanddevice and the corresponding computing device; generating, by theaggregation system, an aggregated status message based on the statusmessages received from the plurality of computing devices, wherein theaggregated status message uniquely identifies computing devices thatfailed to perform the protocol operation and identifies the success ofremaining computing devices with a single success identifier; andtransmitting, by the aggregation system, the aggregation status messageto the command device.

Example 41 includes the subject matter of Example 40, and furtherincluding receiving, by the aggregation system and from the commanddevice, the protocol message corresponding with execution of theprotocol; and transmitting, by the aggregation system, the protocolmessage to the plurality of computing devices.

Example 42 includes one or more machine-readable storage mediacomprising a plurality of instructions stored thereon that, in responseto execution by a computing system, cause the computing system toperform the method of any of Examples 40-41.

Example 43 includes an aggregation system for protocol execution, theaggregation system comprising means for receiving a status message fromeach computing device of a plurality of computing devices, wherein thestatus message indicates a success or failure of a protocol operation bythe corresponding computing device that is associated with a protocolmessage of a protocol between a command device and the correspondingcomputing device; means for generating an aggregated status messagebased on the status messages received from the plurality of computingdevices, wherein the aggregated status message uniquely identifiescomputing devices that failed to perform the protocol operation andidentifies the success of remaining computing devices with a singlesuccess identifier; and means for transmitting the aggregation statusmessage to the command device.

Example 44 includes the subject matter of Example 43, and furtherincluding means for receiving, from the command device, the protocolmessage corresponding with execution of the protocol; and means fortransmitting the protocol message to the plurality of computing devices.

1-4. (canceled)
 5. One or more non-transitory computer-readable mediacomprising a plurality of instructions stored thereon that, whenexecuted by a processor, cause the processor to: receive a plurality ofstatus messages, each status message of the plurality of status messagescomprising a device status indicator for a compute device of a pluralityof compute devices; store, for each of the plurality of status messages,an operation status indicator for one or more operations of a computedevice of the plurality of computer devices; aggregate the plurality ofstatus messages to a single aggregated status message; transmit thesingle aggregated status message to a remote compute device; receive astorage location identifier from the remote compute device thatidentifies a location of a cache store; and store the operation statusindicator for the one or more operations of the compute device of theplurality of compute devices at a cache store at the location of a cachestore identified by the storage location identifier.
 6. The one or morecomputer-readable media of claim 5, wherein the plurality ofinstructions further cause the processor to: receive a request, from theremote compute device, for the operation status indicator for the one ormore operations of one of the plurality of compute devices; and send theoperation status indicator to the remote compute device.
 7. The one ormore computer-readable media of claim 5, wherein each of the pluralityof status messages does not include an indication of successfulexecution of one or more operations corresponding to a unique computedevice of the plurality of compute devices.
 8. The one or morecomputer-readable media of claim 5, wherein the plurality ofinstructions further cause the processor to: receive the plurality ofstatus messages from one or more intermediate compute devices differentfrom the plurality of compute devices.
 9. The one or morecomputer-readable media of claim 5, wherein each of the plurality ofstatus messages indicates a performance parameter of the correspondingcompute device of the plurality of compute devices.
 10. The one or morecomputer-readable media of claim 5, wherein the plurality ofinstructions further cause the processor to: cache the indication of thestatus of the one or more operations of the corresponding compute deviceof the plurality of compute devices at a cache store accessed at auniform resource locator known to both the processor and the remotecompute device.
 11. The one or more computer-readable media of claim 5,wherein the plurality of instructions further cause the processor toreceive a storage location identifier from the remote compute devicethat identifies a location of a cache store, wherein to cache theindication of the status of the one or more operations of thecorresponding compute device of the plurality of compute devicescomprises to cache the indication of the status of the one or moreoperations of the corresponding compute device of the plurality ofcompute devices at a cache store accessed at the location of the cachestore identified by the storage location identifier.
 12. An aggregationdevice comprising: a communication module to receive a plurality ofstatus messages, wherein each status message comprises a device statusindicator for a compute device of a plurality of compute devices, and aprotocol execution module to: store, for each of the plurality of statusmessages, an operation status indicator for one or more operations of acompute device of the plurality of computer devices; aggregate theplurality of status messages to a single aggregated status message;transmit the single aggregated status message to a remote computedevice; receive a storage location identifier from the remote computedevice that identifies a location of a cache store; and store theoperation status indicator for the one or more operations of the computedevice of the plurality of compute devices at a cache store at thelocation of a cache store identified by the storage location identifier.13. The aggregation device of claim 12, wherein the protocol executionmodule is further to: receive a request, from the remote compute device,for the operation status indicator for the one or more operations of oneof the plurality of compute devices; and send the operation statusindicator to the remote compute device.
 14. The aggregation device ofclaim 12, wherein each of the plurality of status messages does notinclude an indication of successful execution of one or more operationscorresponding to a unique compute device of the plurality of computedevices.
 15. The aggregation device of claim 12, wherein to receive aplurality of status messages comprises to receive the plurality ofstatus messages from one or more intermediate compute devices differentfrom the plurality of compute devices.
 16. The aggregation device ofclaim 12, wherein each of the plurality of status messages indicates aperformance parameter of the corresponding compute device of theplurality of compute devices.
 17. The aggregation device of claim 12,the protocol execution module t: cache the indication of the status ofthe one or more operations of the corresponding compute device of theplurality of compute devices at a cache store accessed at a uniformresource locator known to both the processor and the remote computedevice.
 18. The aggregation device of claim 12, wherein thecommunication module is further to receive a storage location identifierfrom the remote compute device that identifies a location of a cachestore, wherein to cache the indication of the status of the one or moreoperations of the corresponding compute device of the plurality ofcompute devices comprises to cache the indication of the status of theone or more operations of the corresponding compute device of theplurality of compute devices at a cache store accessed at the locationof the cache store identified by the storage location identifier.
 19. Amethod comprising: receiving, by an aggregation device, a plurality ofstatus messages, each status message of the plurality of status messagescomprising a device status indicator for a compute device of a pluralityof compute devices; storing, by the aggregation device and for each ofthe plurality of status messages, an operation status indicator for oneor more operations of a compute device of the plurality of computerdevices; aggregating, by the aggregation device, the plurality of statusmessages to a single aggregated status message; transmitting, by theaggregation device, the single aggregated status message to a remotecompute device; and storing, by the aggregation device, the operationstatus indicator for the one or more operations of the compute device ofthe plurality of compute devices at a cache store at the location of acache store identified by the storage location identifier.
 20. Themethod of claim 19, further comprising: receiving, by the aggregationdevice, a request, from the remote compute device, for the operationstatus indicator for the one or more operations of one of the pluralityof compute devices; and sending, by the aggregation device, theoperation status indicator to the remote compute device.
 21. The methodof claim 19, wherein each of the plurality of status messages does notinclude an indication of successful execution of one or more operationscorresponding to a unique compute device of the plurality of computedevices.
 22. The method of claim 19, wherein receiving, by theaggregation device, a plurality of status messages comprises receiving,by the aggregation device, the plurality of status messages from one ormore intermediate compute devices different from the plurality ofcompute devices.
 23. The method of claim 19, wherein each of theplurality of status messages indicates a performance parameter of thecorresponding compute device of the plurality of compute devices. 24.The method of claim 19, further comprising caching, by the aggregationdevice, the indication of the status of the one or more operations ofthe corresponding compute device of the plurality of compute devices ata cache store accessed at a uniform resource locator known to both theaggregation device and the remote compute device.